/**
 * API端点管理相关类型定义
 */

/** HTTP方法枚举 */
export enum HttpMethod {
  GET = "GET",
  POST = "POST",
  PUT = "PUT",
  DELETE = "DELETE",
  PATCH = "PATCH"
}

/** 参数位置枚举 */
export enum ParamLocation {
  QUERY = "QUERY",
  PATH = "PATH",
  BODY = "BODY",
  HEADER = "HEADER"
}

/** 响应格式枚举 */
export enum ResponseFormat {
  JSON = "JSON",
  XML = "XML"
}

/** API参数信息 */
export interface ApiParameterVO {
  /** 参数名称 */
  paramName: string
  /** 参数类型 */
  paramType: string
  /** 参数位置 */
  paramLocation: ParamLocation
  /** 是否必填 */
  required: boolean
  /** 参数描述 */
  description: string
  /** 默认值 */
  defaultValue: string
  /** 示例值 */
  exampleValue: string
}

/** API字段信息 */
export interface ApiFieldVO {
  /** 字段名称 */
  fieldName: string
  /** 字段类型 */
  fieldType: string
  /** 是否包含在响应中 */
  included: boolean
  /** 字段描述 */
  description: string
  /** 示例值 */
  exampleValue: string
}

/** API端点信息 */
export interface ApiEndpointVO {
  /** 端点ID */
  endpointId: number
  /** 端点名称 */
  endpointName: string
  /** 端点路径 */
  endpointPath: string
  /** HTTP方法 */
  httpMethod: HttpMethod
  /** 关联表ID */
  tableId: number
  /** 关联表名 */
  tableName: string
  /** 表描述 */
  tableComment: string
  /** 端点描述 */
  description: string
  /** 启用分页 */
  enablePagination: boolean
  /** 启用排序 */
  enableSorting: boolean
  /** 启用筛选 */
  enableFiltering: boolean
  /** 响应格式 */
  responseFormat: ResponseFormat
  /** 所属项目ID */
  projectId: number
  /** 所属项目名称 */
  projectName: string
  /** 创建者ID */
  creatorId: number
  /** 创建者名称 */
  creatorName: string
  /** 创建时间 */
  createTime: string
  /** 更新时间 */
  updateTime: string
  /** API参数信息 */
  requestParameters: ApiParameterVO[]
  /** API字段信息 */
  responseFields: ApiFieldVO[]
}

/** API参数配置 */
export interface ApiParameterConfig {
  /** 参数名称 */
  paramName?: string
  /** 参数类型 */
  paramType?: string
  /** 参数位置 */
  paramLocation?: ParamLocation
  /** 是否必填 */
  required?: boolean
  /** 参数描述 */
  description?: string
  /** 默认值 */
  defaultValue?: string
  /** 示例值 */
  exampleValue?: string
}

/** API字段配置 */
export interface ApiFieldConfig {
  /** 字段名称 */
  fieldName?: string
  /** 字段类型 */
  fieldType?: string
  /** 是否包含在响应中 */
  included?: boolean
  /** 字段描述 */
  description?: string
  /** 示例值 */
  exampleValue?: string
}

/** API端点请求参数 */
export interface ApiEndpointRequest {
  /** 端点ID（更新时必填） */
  endpointId?: number
  /** 端点名称 */
  endpointName: string
  /** 端点路径 */
  endpointPath: string
  /** HTTP方法 */
  httpMethod: HttpMethod
  /** 关联表ID */
  tableId: number
  /** 端点描述 */
  description?: string
  /** 启用分页 */
  enablePagination?: boolean
  /** 启用排序 */
  enableSorting?: boolean
  /** 启用筛选 */
  enableFiltering?: boolean
  /** 响应格式 */
  responseFormat?: ResponseFormat
  /** 所属项目ID */
  projectId: number
  /** API参数配置 */
  requestParameters?: ApiParameterConfig[]
  /** API字段配置 */
  responseFields?: ApiFieldConfig[]
}

/** API端点查询参数 */
export interface ApiEndpointPageQuery {
  /** 项目ID */
  projectId?: number
  /** 表ID */
  tableId?: number
  /** HTTP方法 */
  httpMethod?: HttpMethod
  /** 当前页 */
  current?: number
  /** 每页大小 */
  size?: number
}

/** API统计信息 */
export interface ApiStatistics {
  /** 总端点数 */
  totalEndpoints: number
  /** GET端点数 */
  getEndpoints: number
  /** POST端点数 */
  postEndpoints: number
  /** PUT端点数 */
  putEndpoints: number
  /** DELETE端点数 */
  deleteEndpoints: number
  /** 有API的表数 */
  tablesWithApi: number
  /** 无API的表数 */
  tablesWithoutApi: number
}

/** 端点路径检查参数 */
export interface EndpointPathCheckQuery {
  /** 端点路径 */
  endpointPath: string
  /** HTTP方法 */
  httpMethod: HttpMethod
  /** 项目ID */
  projectId: number
  /** 排除的端点ID */
  excludeEndpointId?: number
}
